import moment from 'moment';
import OSS from 'ali-oss'


const token = {
  // access_key_id: 'LTAIpojgNESiRSg1', // oss的key_id
  // access_key_secret: 'n5ntZDO9dpQaifEjESQyA0uTu92KUj', // oss的secret
  // OSS_ENDPOINT: 'oss-cn-shanghai', // 自己oss服务器的配置信息
  // OSS_BUCKET: 'xiaomayou', // 自己oss服务器的配置信息
  // 返回的是文件流，需要加一个域名才可是文件方式返回
  access_key_id: 'LTAI4Fdqx1ubZUKst9WnKU9w', // oss的key_id
  access_key_secret: 'zkvcPZCVxFHdkYQAg3c2aX1nJONyvl', // oss的secret
  OSS_ENDPOINT: 'oss-cn-shenzhen', // 自己oss服务器的配置信息
  OSS_BUCKET: 'gangmao', // 自己oss服务器的配置信息

}


const client = () => {
  return OSS({
    accessKeyId: token.access_key_id,
    accessKeySecret: token.access_key_secret,
    region: token.OSS_ENDPOINT, // ststoken: '96321457845446554',
    bucket: token.OSS_BUCKET,
  });
}

const uploadPath = (path, file) => {
  // 上传文件的路径，使用日期命名文件目录
  return `${path}/${moment().format('YYYYMMDD')}/${file.name.split(".")[0]}.${file.name.split(".")[1]}`
  // return `android.${file.type.split("/")[1]}`
}

export function getBase64(img, callback) {
  const reader = new FileReader();
  reader.addEventListener('load', () => callback(reader.result));
  reader.readAsDataURL(img);
}

export const UploadToOss = (path, file) => {
  const url = uploadPath(path, file)
  return new Promise((resolve, reject) => {
    client().multipartUpload(url, file).then(data => {
      console.log('data' + JSON.stringify(data))
      // let uri = '';
      // if (data.res.requestUrls[0].indexOf('?upload') > -1) {
      //   uri = data.res.requestUrls[0].substring(0, data.res.requestUrls[0].indexOf('?upload'));
      // } else {
      //   uri = data.res.requestUrls[0];
      // }
      resolve(uri);
    }).catch(error => {
      reject(error)
    })
  })
}

//分片上传
var tempCheckpoint;
export var ObjectP;
// var tempCheckpoint,

// export var ObjectP

export const progress = (p, _checkpoint) => {
  console.log('p:', p); // Object的上传进度。
  tempCheckpoint = _checkpoint
  // export var tempCheckpoint
  ObjectP = p
  console.log('_checkpoint:', _checkpoint); // 分片上传的断点信息。
};

// 开始分片上传。
export function UploadToOssmultipartUpload(path, file) {
  const url = uploadPath(path, file)
  return new Promise((resolve, reject) => {
    client().multipartUpload(url, file, {
      progress,
      // meta是用户自定义的元数据，通过head接口可以获取到Object的meta数据。
      meta: {
        year: 2020,
        people: 'user',
      }
    }).then(data => {
      // 执行成功是返回 多个参数返回时用数组
      resolve(data);
    }).catch(error => {
      reject(error)
    })
    // client.head(path);
  })
}